perm filename OO2.FAI[CMS,LCS] blob sn#176529 filedate 1975-09-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE OO
C00004 00003	RST:	RESET
C00005 00004	INTY:	HRRZI N,MEM+1
C00006 00005	EVAL:	HRRZI MA,1
C00010 00006	BACK:	HRRZI 6,-2(CX)
C00013 00007	GETO:	SKIPN OU	??
C00015 00008	INTRU:	MOVE EN,JOBCNI
C00019 00009	SAVIT:	HRRZM 6,FIXFLG
C00021 00010	OUTINT:	HRRZI 6,.+3
C00023 00011	TABL:	REPEAT 7,{JFCL↔}
C00025 ENDMK
C⊗;
	TITLE OO
	EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBFF,JOBREL,JOBDDT,$I
	A←1 ↔ B←2 ↔ FL←4 ↔ EN←7 ↔ TS←10 ↔ OU←11
	CX←13 ↔ MA←14 ↔ N←15 ↔ P←17 ↔ MEM←17000

INT:	HRRZI EN,INTRU
	HRRZM EN,JOBAPR

FILIN:	HRRZI EN,MEM+200
	CORE EN,
	HALT
	OPEN DEVN
	JRST ERRO
	MOVE 6,PPN
	MOVEM 6,IFNAM+3
	LOOKUP IFNAM
	JRST ERRO
	MOVE EN,INPO
	SETZ TS,
	INPUT EN
	HRRZ EN,MEM
	HRRZI N,MEM(EN)
	HRRM N,INTY
	SOS INTY
	CORE N,
	JRST ERRO
	SUBI EN,200
	JUMPLE EN,RST
	IORI EN,177
	MOVNS EN
	HRLZI EN,-1(EN)
	HRRI EN,MEM+177
	INPUT EN
	JRST RST

ERRO:	OUTSTR QMARK
	JRST RST

FILO:	MOVE 6,TMP
	MOVEM 6,(N)
	AOJ N,
	SUBI N,MEM
	HRRZM N,MEM
	IORI N,177
	MOVNS N
	HRLZI N,-1(N)
	HRRI N,MEM-1
	OPEN DEVN
	JRST ERRO
	SETZM OFNAM+3
	ENTER OFNAM
	JRST ERRO
	SETZ 16,
	OUTPUT N
	RELEAS
RST:	RESET
	SETZM PTNUM
	MOVE P,PDPO
	MOVE EN,IPC
	INTENB EN,
	OUTSTR CRLF

	HRRZ N,INTY
	MOVE OU,(N)
	MOVEM OU,TMP
	TLNN OU,777777
	SKIPA OU,(OU)
	ADD OU,ONEB
	HRRZI TS,(N)
	PUSHJ P,GETO

LOOP:	PUSHJ P,INTY
	PUSHJ P,EVAL
	PUSHJ P,GETO
	JRST LOOP
INTY:	HRRZI N,MEM+1
	HRRZI TS,(N)
	SKIPN PTOFL
	OUTSTR ASTR
	IWAIT
	INCHRS EN
	JRST .-2
INLIN:	HRRZM EN,(TS)
	SETZM 1(TS)
	ADDI TS,2
	INCHRS EN
	CAIA
	JRST INLIN
	SKIPL OU,LITFLG
	JRST (OU)
	POPJ P,

LITCK:	CAME EN,LITCHR
	JRST INTY+4
	SETOM LITFLG
	POPJ P,

STLIT:	SKIPL FIXFLG
	POPJ P,
	IWAIT
	INCHRS LITCHR
	JRST .-2
	SUBI TS,2
	HRRZI 6,LITCK
	HRRZM 6,LITFLG
	HRRZI 6,POPS
	HRRZM 6,FIXFLG
	SUB P,TWOB
	PUSH P,RETRN
	JRST INTY+4

EXCT:	HLRZ 6,6
	XCT TABL(6)
	JRST CKEX1+2
EVAL:	HRRZI MA,1
	HRRZI CX,(N)
	JRST BGIN
MVM:	HRLI OU,400000(MA)
	HRRZI 6,2
	JRST LMVM
LAEQ:	HRRZI 6,2
	CAIE OU,(MA)
	ADDI 6,2
	SUBI 5,2
	HLL OU,(5)
LMVM:	MOVEM OU,(5)
	SETZM 1(5)
	ADDI 5,2
	SUBI TS,(6)
	ADDI 6,(5)
	HRLZI 6,(6)
	HRRI 6,(5)
	BLT 6,(TS)
	JRST LKMO
FDEQ:	MOVE 4,MEM(MA)
	HRRZI 5,(N)
LKMO:	CAMN 4,(5)
	JRST EQU
ADIN:	ADDI 5,2
	CAIGE 5,(TS)
	JRST LKMO
	ADDI MA,2
BGIN:	CAIGE MA,-MEM(N)
	JRST FDEQ
	HRRZI MA,-MEM(CX)
	ADDI N,2
	CAIGE N,(TS)
	JRST FDEQ
	JRST BACK
EQU:	HRRZI OU,(MA)
	CAILE TS,2(5)
	CAIG N,MEM+2(MA)
	JRST CKLA
	MOVE 6,MEM+2(MA)
	CAMN 6,2(5)
	HRRI OU,2(MA)
CKLA:	CAIL 5,2(N)
	SKIPL 6,-2(5)
	JRST .+3
	CAIN MA,2(6)
	JRST LAEQ
	CAIE OU,(MA)
	JRST MVM
	SKIPL 1(5)
	SKIPN 6,MEM+1(OU)
	JRST ADIN
CKEX1:	TRNN 6,777777
	JRST EXCT
	HRLI OU,400001(OU)
	AOJ OU,
	MOVEM OU,1(5)
DOUT:	CAIGE CX,-2(TS)
	JRST ADIN
BACK:	HRRZI 6,-2(CX)
	ADDI 6,2
	SKIPGE 1(6)
	JRST NEGA+1
	SKIPGE OU,(6)
	AOBJN OU,NEGA
	HRRZI OU,-MEM(6)
	HRLI OU,400000(OU)
NEGA:	MOVEM OU,1(6)
	CAIGE 6,-2(TS)
	JRST BACK+1
	CAIE TS,2(CX)
	JRST NOT1
	SUBI TS,2
	MOVE EN,(TS)
	SUB OU,ONEB
	CAME OU,EN
	CAIN CX,MEM(OU)
	AOBJN OU,NEW1
	SKIPL FL,FIXFLG
	AOBJN OU,FIXIT
	HRRZI EN,MEM+1(OU)
	ADD OU,ONEB
CKSAV:	SKIPN SAVFLG
	POPJ P,
	HRRM TS,INTY
	MOVEM EN,TMP
	POPJ P,
NEW1:	SKIPGE FL,FIXFLG
	JRST CKSAV
	HRRZI OU,-MEM+1(CX)
	HRLI OU,400000(OU)
	JRST ADTS
NOT1:	HRRZI EN,-MEM-2(TS)
	HRLI EN,400000-MEM(CX)
	MOVE OU,EN
	ADD OU,ONEB
	SKIPGE FL,FIXFLG
	JRST CKSAV
	MOVEM EN,(TS)
	MOVEM OU,1(TS)
	HRRZI OU,-MEM+1(TS)
	HRLI OU,400000(OU)
ADTS:	ADDI TS,2
FIXIT:	SKIPL EN,TMP
	JRST CKFLS
	MOVEM EN,(TS)
	HRRZI EN,1(TS)
	ADDI TS,2
CKFLS:	PUSHJ P,(FL)
	SETOM FIXFLG
	JRST CKSAV
GETO:	SKIPN OU	;??
	POPJ P,
	SKIPL PTOFL
	OUTSTR SPACE
	TLZN OU,400000
	TRNN OU,400000
	JRST GOUT
	MOVE EN,OU
	HRRZI 4,777775
	JRST MKOUT
PUDO:	HRLI OU,(4)
	PUSH TS,OU
	MOVE OU,EN
GOUT:	HLRZ 4,OU
MOR:	MOVE EN,MEM(4)
	TLZE EN,400000
	JRST PUDO
	TRNE EN,400000
	JRST MKOUT
	SKIPE PTOFL
	JRST PTOUT
	OUTCHR EN
ADO:	ADDI 4,2
	CAIG 4,(OU)
	JRST MOR
	TLNN TS,777777
	JRST TYOUT
	POP TS,OU
	HLRZ 4,OU
	JRST ADO

PTOUT:	TLNE EN,777777
	JRST ADO
	MOVE 6,PTNUM
	PTWR1W 6
	JRST ADO

MKOUT:	HLRZ 6,EN
	HRLI EN,(EN)
	TRZ EN,400000
	MOVEM EN,MEM(6)
	JRST ADO

TYOUT:	SKIPGE PTOFL
	JRST PTOCR
	OUTSTR CRLF
	POPJ P,

PTOCR:	TLNE EN,777777
	POPJ P,
	HRRZI 6,CRLFP
	JRST POST
INTRU:	MOVE EN,JOBCNI
	TLNE EN,20000
	DISMIS
	IMSKCL 1,EN
	MOVE OU,JOBTPC
	TRNE EN,20000
	JRST CORUP
	HRRZI 5,(OU)
	CAIE 5,.+7
	MOVEM OU,IPC+1
	UWAIT
	DEBREAK
	HRRZ 1,PTNUM
POLO:	PTOCNT 1
	SKIPG 2
	INTJEN IPC
	HRRZI 2,PTNUM+2
	PTRDS 1
	OUTSTR (2)
	JRST POLO
CORUP:	SOJ OU,
	MOVEM OU,IPC+1
	UWAIT
	DEBREAK
	HRRZ 1,JOBREL
	AOJ 1,
	CORE 1,
	JRST TABL+77
	INTJEN IPC

PTBEG:	SKIPN PTNUM
	PTYGET PTNUM
	POPJ P,
	HRLZI 6,4
	PTGETL PTNUM
	ORM 6,PTNUM+1
	PTSETL PTNUM
	HRRZI 6,5
	HRRZM 6,PTNUM+1
	PTJOBX PTNUM
	POPJ P,
SETON:	SETOM PTOFL
	OUTSTR CRLFD
	POPJ P,
PTEND:	SKIPN PTNUM
	POPJ P,
	PTYREL PTNUM
	SETZM PTNUM
PTOFF:	SETZM PTOFL
	OUTSTR CRLF
	POPJ P,
PTON:	SKIPE PTNUM
	JRST SETON
	POPJ P,
PTCALL:	SKIPN PTNUM
	POPJ P,
	HRRZI 6,CALLC
POST:	HRRZM 6,PTNUM+1
	PTWRS9 PTNUM
	POPJ P,
SAVIT:	HRRZM 6,FIXFLG
	OUTSTR CRLF
FIXTS:	SUBI TS,2
	MOVE OU,-1(TS)
	SUB P,ONEB
	JRST DOUT

CRFIX:	CAIGE 5,-2(TS)
	POPJ P,
	JRST FIXTS
INDER:	HRRZI 6,.+2
	JRST SAVIT
	MOVEM OU,(EN)
	POPJ P,
LITA:	HRRZI 6,.+2
	JRST SAVIT
	SUB OU,ONEB
	MOVEM OU,(EN)
	POPJ P,
RPLACE:	HRRZI 6,.+2
	JRST SAVIT
	HRR OU,MEM(OU)
	TLZ OU,400000
	TRO OU,400000
	MOVEM OU,(EN)
	POPJ P,
ADER:	HRRZI 6,.+2
	JRST SAVIT
	MOVE 4,MEM-1(OU)
	MOVEM 4,2(TS)
	CAIE TS,1(OU)
	JRST OLD1
	SUBI TS,2
	MOVE OU,(OU)
OLD1:	MOVEM OU,3(TS)
	MOVE 5,(EN)
	MOVE 4,MEM-1(5)
	MOVEM 4,(TS)
	MOVEM 5,1(TS)
	HRRZI OU,-MEM+2(TS)
	HRLI OU,400000-MEM(TS)
	MOVEM OU,4(TS)
	AOBJP OU,
	MOVEM OU,5(TS)
	HRRZI OU,-MEM+5(TS)
	HRLI OU,400000(OU)
	MOVEM OU,(EN)
	ADDI TS,6
	POPJ P,

NDIRT:	HRRZI 6,.+2
	JRST SAVIT
	MOVE OU,MEM(OU)
	MOVEM OU,(EN)
	POPJ P,
OUTINT:	HRRZI 6,.+3
	HRRZM 6,FIXFLG
	POPJ P,
	HRRZI B,7	
	JUMPE OUTZ
	IDIVI =10
	ADDI A,60
	HRRZM A,BLK(B)
	SOJGE B,OUTINT+4
OCHR:	OUTCHR BLK+1(B)
	CAIGE B,6
	AOJA B,OCHR
	POPJ P,
OUTZ:	CAIL B,7
	HRLZI B,300000
	JRST OCHR

BLK:	BLOCK 20

GLSTV:	PUSHJ P,GLSTA
	MOVE VAL(A)
	POPJ P,
	
GNXTV:	PUSHJ P,GNXTA
	MOVE VAL(A)
	POPJ P,

GLSTA:	SKIPGE A,-1(5)
	SKIPL A,MEM(A)
	CAIA
	JRST .-2
	SKIPN A
	SKIPL A,-2(5)
	POPJ P,
	JRST GLSTV+1

GNXTA:	SKIPN A,3(5)
	SKIPG A,2(5)
	SKIPL A
	POPJ P,
	HLRZ A,A
	MOVE A,MEM+400000(A)
	JRST GNXTA+2

ADIT:	PUSHJ P,GLSTV
	PUSHJ P,GNXTA
	ADD VAL(A)
	POPJ P,
SUBIT:	PUSHJ P,GLSTV
	PUSHJ P,GNXTA
	SUB VAL(A)
	POPJ P,

VAL:	BLOCK 101 ↔ 2 ↔ 2 ↔ BLOCK 76
TABL:	REPEAT 7,{JFCL↔}
	JRST RST
	PUSHJ P,GLSTA
	PUSHJ P,GNXTA
	PUSHJ P,GLSTV
	PUSHJ P,GNXTV
	PUSHJ P,OUTINT
	PUSHJ P,CRFIX
	REPEAT 24,{JFCL↔}
	PUSHJ P,STLIT
	REPEAT 10,{JFCL↔}
	PUSHJ P,ADIT
	PUSHJ P,PTOFF
	PUSHJ P,SUBIT
	PUSHJ P,PTON
	REPEAT 13,{JFCL↔}
	PUSHJ P,INDER
	REPEAT 4,{JFCL↔}
	JSR $I
	PUSHJ P,NDIRT
	PUSHJ P,ADER
	JFCL
	PUSHJ P,PTCALL
	REPEAT 2,{JFCL↔}
	PUSHJ P,FILIN
	REPEAT 4,{JFCL↔}
	PUSHJ P,PTEND
	PUSHJ P,LITA
	JFCL
	SETZM SAVFLG
	PUSHJ P,FILO
	PUSHJ P,PTBEG
	JFCL
	PUSHJ P,RPLACE
	SETOM SAVFLG
	REPEAT 53,{JFCL↔}
POPS:	POPJ P,	↔ PDPO:	IOWD 100,PDL
PDL:	BLOCK 100    ↔	PTOFL:	0
IPC:	21000,,20000 ↔	0 ↔	PPN: 	'CMSLCS'
DEVN:	17	     ↔	SIXBIT/DSK/ ↔	0
IFNAM:	SIXBIT/ALY/  ↔	SIXBIT/OOP/ ↔	BLOCK 2
OFNAM:	SIXBIT/LAST/  ↔	SIXBIT/OOP/ ↔	BLOCK 2
INPO:	IOWD 200,MEM ↔	QMARK:	45767706424
CRLF:	64240,,0     ↔	ASTR:	ASCIZ/*/
SPACE:	ASCIZ/ /     ↔	CALLC:	600600,,0
CRLFP:	015012,,     ↔	FIXFLG:	-1
CRLFD:	64245,,600000
TMP:	0    ↔	SAVFLG:	-1
LITFLG:	-1   ↔	LITCHR:	LITCK
ONEB:	1,,1 ↔	TWOB:	2,,2
RETRN:	LOOP+1 ↔ PATCH:	BLOCK 100
PTNUM:	0    ↔	BLOCK 400
	END INT